#

| Preface |

## Chapter Summary

If you want to investigate specific topics rather than read the entire book through, here is a chapter-by-chapter summary:

Chapter 1

  introduces the Korn shell and tells you how to install it as your login shell. Then it gives an introduction to the basics of interactive shell use, including overviews of the UNIX file and directory scheme, standard I/O, and background jobs.

Chapter 2, Command-line Editing,

  discusses the shell's command history mechanism, including the emacs- and vi-editing modes and the fc history command.

Chapter 3, Customizing Your Environment,

  covers ways to customize your shell environment without programming, by using the .profile and environment files. Aliases, options, and shell variables are the customization techniques discussed.

Chapter 4

  is an introduction to shell programming. It explains the basics of shell scripts and functions, and discusses several important "nuts-and-bolts" programming features: string manipulation operators, regular expressions, command-line arguments (positional parameters), and command substitution.

Chapter 5, Flow Control,

  continues the discussion of shell programming by describing command exit status, conditional expressions, and the shell's flow-control structures: if, for, case, select, while, and until.

Chapter 6, Command-line Options and Typed Variables,

  goes into depth about positional parameters and command-line option processing, then discusses special types and properties of variables, such as integer arithmetic and arrays, and the typeset command.

Chapter 7, Input/Output and Command-line Processing,

  gives a detailed description of Korn shell I/O, filling in the information omitted in Chapter 1. All of the shell's I/O redirectors are covered, as are the line-at-a-time I/O commands read and print. Then the chapter discusses the shell's command-line processing mechanism and the eval command.

Chapter 8, Process Handling,

  covers process-related issues in detail. It starts with a discussion of job control, then gets into various low-level information about processes, including process IDs, signals, and traps. The chapter then moves out to a higher level of abstraction to discuss coroutines, two-way pipes, and subshells.

Chapter 9, Debugging Shell Programs,

  discusses various debugging techniques, starting with simple ones like trace and verbose modes and "fake signal" traps. Then it presents kshdb, a Korn shell debugging tool that you can use to debug your own code.

Chapter 10, Korn Shell Administration,

  gives information for system administrators, including techniques for implementing system-wide shell customization and features related to system security.

Appendix A

  compares the 1988 UNIX Korn shell to several similar shells, including the standard Bourne shell, the IEEE 1003.2 POSIX shell standard, the Windowing Korn shell (wksh), public domain Korn shell (pdksh), the Free Software Foundation's bash, and the MKS Toolkit shell for MS-DOS and OS/2.

Appendix B, Reference Lists,

  contains lists of shell invocation options, built-in commands, built-in variables, conditional test operators, options, typeset command options, and emacs and vi editing mode commands.

Appendix C, Obtaining Sample Programs,

  lists the ways that you can obtain the major scripts in this book for free, using anonymous FTP or electronic mail.

Code Examples |  | Conventions Used in This Handbook